home *** CD-ROM | disk | FTP | other *** search
- /***********************************************************************
- * class CDirMatcher - Assists in processing directories to find
- * files matching wildcard, attribute, date/time and filesize
- * requirements.
- *
- * Copyright (C) D. Munro 1996
- *
- * This program source is freely redistributable.
- ************************************************************************
-
-
- #ifndef __DIRMATCHER__
- #define __DIRMATCHER__
-
- #include <limits.h>
-
- #define ALL_ATTRIBUTES FILE_ATTRIBUTE_ARCHIVE |
-
- class CDirMatcher
- {
- private:
- CStringArray m_strarrFileSpecs;
- COleDateTime m_oledteStartTime, m_oledteEndTime;
- __int64 m_qwMinSize, m_qwMaxSize;
- BOOL m_bMatchReadOnly, m_bMatchDirectory, m_bMatchHidden,
- m_bMatchSystem, m_bMatchNormal, m_bMatchArchive;
-
- void _Constructor_(BOOL bMatchHidden, BOOL bMatchSystem,
- BOOL bMatchReadOnly, BOOL bMatchDirectory,
- BOOL bMatchNormal, BOOL bMatchArchive,
- COleDateTime *pStartTime, COleDateTime *pEndTime,
- DWORD dwMinSizeLo, DWORD dwMinSizeHi,
- DWORD dwMaxSizeLo, DWORD dwMaxSizeHi);
-
- void _SetDates_(COleDateTime *pStartTime, COleDateTime *pEndTime);
- void _SetSizes_(DWORD dwMinSizeLo, DWORD dwMinSizeHi, DWORD dwMaxSizeLo,
- DWORD dwMaxSizeHi);
- void _SetSpecs_(CString strSpec, CString &strName, CString &strExt);
- void _ExpandSpec_(CString &strExpNameSpec, int nNameLen);
- BOOL _MatchSpecToName_(CString strSpec, CString strName);
- int _ParseSpecs_(CString strSpecs);
-
- public:
- CDirMatcher(CStringArray &strarrSpecs,
- BOOL bMatchHidden =FALSE, BOOL bMatchSystem =FALSE,
- BOOL bMatchReadOnly =TRUE, BOOL bMatchDirectory = TRUE,
- BOOL bMatchNormal =TRUE, BOOL bMatchArchive =TRUE,
- COleDateTime *pStartTime =NULL, COleDateTime *pEndTime =NULL,
- DWORD dwMinSizeLo =0, DWORD dwMinSizeHi =0,
- DWORD dwMaxSizeLo =INT_MAX, DWORD dwMaxSizeHi =INT_MAX);
-
- CDirMatcher(CString strSpecs ="*.*",
- BOOL bMatchHidden =FALSE, BOOL bMatchSystem =FALSE,
- BOOL bMatchReadOnly =TRUE, BOOL bMatchDirectory = TRUE,
- BOOL bMatchNormal =TRUE, BOOL bMatchArchive =TRUE,
- COleDateTime *pStartTime =NULL, COleDateTime *pEndTime =NULL,
- DWORD dwMinSizeLo =0, DWORD dwMinSizeHi =0,
- DWORD dwMaxSizeLo =INT_MAX, DWORD dwMaxSizeHi =INT_MAX);
-
- void SetAttributes(BOOL bMatchReadOnly =TRUE, BOOL bMatchDirectory = TRUE,
- BOOL bMatchHidden =FALSE, BOOL bMatchSystem =FALSE,
- BOOL bMatchNormal =TRUE, BOOL bMatchArchive =TRUE);
- void SetFileSpecs(CStringArray strarrSpecs);
- void AddFileSpec(CString strSpec);
- void SetDates(COleDateTime *pStartTime =NULL, COleDateTime *pEndTime =NULL)
- { _SetDates_(pStartTime, pEndTime); };
- void SetSizes(DWORD dwMinSizeLo =0, DWORD dwMinSizeHi =0,
- DWORD dwMaxSizeLo =INT_MAX, DWORD dwMaxSizeHi =INT_MAX)
- { _SetSizes_(dwMinSizeLo, dwMinSizeHi, dwMaxSizeLo, dwMaxSizeHi); }
- int GetNoSpecs() { return m_strarrFileSpecs.GetSize(); }
- BOOL Match(WIN32_FIND_DATA *pFindData);
- };
-
- #endif
-